String Format 使用指南
输出 String
是一个我们常用的功能,用过使用 String Format
可以方便地格式化输出数值。Java SE 5.0
起沿用了 C
语言库函数的 printf
方法。
API
|
|
- l - 使用特定的
local
使用format
规则,可以为null
。 - format - 将要输出的字符串中的数值使用转换符替换。
- args - 使用的数值。
常见的使用方法:
|
|
举例:
|
|
Format 说明符语法
Format
说明符以 %
字符开始,再加上转换符以及其他标志组成。例如 %d
表示用整数替换,%s
表示用字符串替换。
转换符
全部的转换符如下:
转换符 | 类型 |
---|---|
d | 十进制整数 |
x | 十六进制整数 |
o | 八进制整数 |
f | 定点浮点数 |
e | 指数浮点数 |
g | 通用浮点数 |
a | 十六进制浮点数 |
s | 字符串 |
c | 字符 |
b | 布尔值 |
h | 哈希值(散列码) |
tx | 日期时间 |
Tx | 大写日期时间(英语时有效) |
% | 百分号 |
n | 行分隔符 |
整数类测试
d - 十进制整数
12System.out.printf("%d", 10);>>> 10x - 十六进制整数
12System.out.printf("%x", 10);>>> ao - 八进制整数
12System.out.printf("%o", 10);>>> 12
浮点数类测试
f - 定点浮点数
12System.out.printf("%f", 1000.0 / 3.0);>>> 333.333333e - 指数浮点数
12System.out.printf("%e", 1000.0 / 3.0);>>> 3.333333e+02g - 通用浮点数
12System.out.printf("%g", 1000.0 / 3.0);>>> 33.333a - 十六进制浮点数
12System.out.printf("%a", 1000.0 / 3.0);>>> 0x1.4d55555555555p8
字符串与字符测试
s - 字符串
12System.out.printf("%s", "Hello");>>> Helloc - 字符
12System.out.printf("%c", 'c');>>> c
布尔值测试
b - 布尔值
12System.out.printf("%b %b", true, false);>>> true false
哈希值(散列码)测试
h - 哈希值(散列码)
12System.out.printf("%h %h", "Hello", 'c', 10, 1000.0 / 3.0, true, false);>>> 42628b2 63 a 15218000 4cf 4d5得到的字符串即为对象的
hashCode()
返回值。例如,我们创建一个类
A
,并重写hashCode()
,使其返回值为"Hello".hashCode()
:123456class A {public int hashCode() {return "Hello".hashCode();}}再通过
%h
格式化字符串:123A a = new A();System.out.printf("%h %h", a, "Hello");>>> 42628b2 42628b2
日期时间测试
tx - 日期时间
x
为日期时间转换符,例如c
- 完整的日期和时间。12345System.out.printf("%tc", new Date());>>> 星期四 四月 07 12:20:33 CST 2016System.out.printf(new Locale("En"), "%tc", new Date());>>> Thu Apr 07 17:43:17 CST 2016Tx - 大写日期时间(英语)
12System.out.printf(new Locale("En"), "%Tc", new Date());>>> THU APR 07 17:43:17 CST 2016
完整的日期时间转换符如下:
转换符 | 类型 |
---|---|
c | 完整的日期和时间 |
F | ISO 8601 日期 |
D | 美国日期格式(月/日/年) |
T | 24小时,时分秒 |
r | 12小时,时分秒 |
R | 24小时,时分 |
Y | 4位数字年,不足补0 |
y | 年的后2位数字,不足补0 |
C | 年的前2位数字,不足补0 |
B | 月份的全拼 |
b 或 h | 月份的缩写 |
m | 2位数字月,不足补0 |
d | 2位数字日,不足补0 |
e | 2位数字日,不补0 |
A | 星期的全拼 |
a | 星期的缩写 |
j | 3位数字年中第几日,不足补0 |
H | 2位数字小时(0 ~ 23),不足补0 |
k | 2位数字小时(0 ~ 23),不补0 |
I(大写i) | 2位数字小时(0 ~ 12),不足补0 |
l(小写L) | 2位数字小时(0 ~ 12),不补0 |
M | 2位数字分钟,不足补0 |
S | 2位数字秒,不足补0 |
L | 3位数字毫秒,不足补0 |
N | 9位数字微秒,不足补0 |
p | 上午或下午 |
z | 从GMT起,RFC822数字移位 |
Z | 时区 |
s | 距格林威治时间 1970-01-01 00:00:00 的秒数 |
Q | 距格林威治时间 1970-01-01 00:00:00 的毫秒数 |
百分号与行分隔符
% - 百分号
12System.out.printf("%%");>>> %n - 行分隔符
123System.out.printf("line1%nline2");>>> line1line2